package DAO;

import Codigo.Detetive;
import Modelo.Cidades;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DetetiveDAO {
    public boolean Cadastrar(Detetive obj)
    {
        Boolean retorno = false;
        String sql = "INSERT INTO detetive (nome, email, numerocasos, nomeequipe)" 
                + "VALUES(?,?,?,?)";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {                      
                        psm.setString(1, obj.getNome());
                        psm.setString(2, obj.getEmail());
                        psm.setInt(3, Integer.parseInt(obj.getNcasos()));
                        psm.setString(4, obj.getEquipe());
                        //Executar o insert
                        Integer resultado = psm.executeUpdate();
                        if (resultado > 0) {
                            retorno = true;
                        } else {
                            retorno = false;
                        }
                    } catch (SQLException ex) {
                        System.out.println("Erro ao acessar o banco"+ ex.getMessage());
                        return false;
                    }
        return retorno;
    }
     public Boolean Alterar(Detetive obj) {

        Boolean retorno = false;

        String sql = "UPDATE detetive "
                + "   SET  nome=?, email=?, equipe=? "
                + "   WHERE ncasos=?, detetiveid=?";
        PreparedStatement pst = Conexao.getPreparedStatement(sql);

        try {
            pst.setString(1, obj.getNome());
            pst.setString(2, obj.getEmail());
            pst.setInt(3, obj.getDetetiveid());
            pst.setString(4, obj.getNcasos());
            pst.setString(5, obj.getEquipe());

            Integer resultado = pst.executeUpdate();
            if (resultado > 0) {
                retorno = true;
            } else {
                retorno = false;
            }
        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco");
            return false;
        }
        return retorno;
    }
    
     public List<Detetive> Listar()
    {
    List<Detetive> lista = new ArrayList<Detetive>();
        String sql = "SELECT * FROM detetive";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
                    try {
                        ResultSet resultado = psm.executeQuery();
                        
                        while(resultado.next())
                        {
                            Detetive obj = new Detetive();
                            obj.setDetetiveid(resultado.getInt("detetiveid"));
                            obj.setNome(resultado.getString("nome"));
                            obj.setEmail(resultado.getString("email"));
                            obj.setNcasos(resultado.getString("numerocasos"));
                            obj.setEquipe(resultado.getString("nomeequipe"));
                            //adiciona na lista
                            lista.add(obj);
                        }
                    } catch (SQLException ex) {
                        lista = null;
                     
                    }
        return lista;
    }
      public Boolean Excluir(Detetive obj)
    {
        Boolean retorno = false;
        //MONTA A STRING DE EXCLUSÃO A PARTIR DA CHAME PRIMÁRIA
        String sql = "DELETE FROM detetive WHERE detetiveid=?";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
        try{
            psm.setInt(1, obj.getDetetiveid());
            Integer resultado = psm.executeUpdate();
            if(resultado>0)
            {
                retorno = true;
            }
            else
            {
                retorno = false;
            }
        }
        catch (SQLException ex){
            System.out.println("BD: "+ ex.getMessage());
            }
        return retorno;
    }
      public Detetive Consultar(Detetive obj2) {

        String sql = "SELECT * FROM detetive WHERE nome = ?";
        Detetive obj = null;
        PreparedStatement psm = Conexao.getPreparedStatement(sql);

        try {
            psm.setString(1, obj2.getNome());
            ResultSet resultado = psm.executeQuery();

            if (resultado.next()) {
                obj = new Detetive();
                obj.setDetetiveid(resultado.getInt("detetiveid"));
                obj.setNome(resultado.getString("nome"));
                obj.setEmail(resultado.getString("e-mail"));
                obj.setNcasos(resultado.getString("ncasos"));
                obj.setEquipe(resultado.getString("equipe"));

            }

        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco: " + ex.getMessage().toString());

        }

        return obj;
    }
       public Boolean Excluir(Cidades obj)
    {
        Boolean retorno = false;
        //MONTA A STRING DE EXCLUSÃO a partir da chave primária
        String sql = "DELETE FROM detetive WHERE cidadeid=?";
        PreparedStatement psm = Conexao.getPreparedStatement(sql);
        try {
            //PASSA A CHAVE PRIMÁRIA AO PARÂMETRO
            psm.setInt(1, obj.getCidadeid());
            //EXECUTA A CONSULTA
            Integer resultado = psm.executeUpdate();
            if(resultado>0)
            {
                retorno = true; 
            }
            else
            {
                retorno = false;
            }
        } catch (SQLException ex) {
             System.out.println("BD: " + ex.getMessage());
        }
        return retorno;
}}
